System and Method for Low-Density Parity Check (LDPC) Code Design

ABSTRACT

Disclosed is a density evolution algorithm based on a refined definition of node and edge densities for different parts of the code. In particular, density functions ƒ V   (1) (i) and ƒ V   (2) (i) of the output edges of the variable nodes with degree i within different codeword regions w 1  and w e , respectively, are defined and then calculated. Further, density functions ƒ C   (1) (j) and ƒ C   (2) (j) of the output edges for check nodes with degree j within codeword regions w 1  and w e , respectively, are defined and then calculated. Mixture density functions of output check edges connecting variable nodes in the first codeword region and the second codeword region are then calculated to determine an LDPC code design.

This application claims the benefit of U.S. Provisional Application No.60/730,715 filed Oct. 27, 2005, which is incorporated herein byreference.

BACKGROUND OF THE INVENTION

The present invention relates generally to wireless communications, andmore particularly to low-density parity check code design.

In wireless communications, a transmitter typically transmitsinformation to a receiver over a communication channel. Statistically, acommunication channel can be defined as a triple consisting of an inputalphabet, an output alphabet, and for each pair (i,o) of input andoutput elements of each alphabet, a transition probability p(i,o). Thetransition probability is the probability that the receiver receives thesymbol o given that the transmitter transmitted symbol i over thechannel.

Given a communication channel, there exists a number, called thecapacity of the channel, such that reliable transmission is possible forrates arbitrarily close to the capacity, and reliable transmission isnot possible for rates above the capacity.

In some circumstances, the distance separating the transmitter (i.e.,source) and the receiver (i.e., destination) is large. Alternatively oradditionally, the communication channel over which the source anddestination communicate may be poor quality. As a result, interferencemay be introduced in the communications between the source and thedestination, which can result in distortion of the message.

To reduce the effect of interference, the transmitter and receiver oftentransmit information over a communication channel using a coding scheme.The coding scheme provides redundancy so that the message can bedetected (and decoded) by the receiver in the presence of interference.

The coding scheme uses codes, which are an ensemble (i.e., group) ofvectors that are to be transmitted by the transmitter. The length of thevectors are assumed to be the same and is referred to as the blocklength of the code. If the number of vectors is K=2^(k), then everyvector can be described with k bits. If the length of the vectors is n,then in n times use of the channel k bits have been transmitted. Thecode then has a rate of k/n bits per channel use, or k/n bpc.

Low-density parity check (LDPC) codes are a class of linear block codesthat often approach the capacity of conventional single usercommunication channels. The name comes from the characteristic of theirparity-check matrix, which contains only a few 1's in comparison to theamount of 0's. LDPC codes may use linear time complex algorithms fordecoding.

In more detail, LDPC codes are linear codes obtained from sparsebipartite graphs. FIG. 1 shows a graph 100 of an LDPC code. The graph100 has n left nodes (i.e., x₁ to x₁₀) (called message nodes) and mright nodes (called check nodes). The graph 100 gives rise to a linearcode of block length n and dimension at least n−m in the following way:the m coordinates of the codewords are associated with the n messagenodes. The codewords are those vectors (c₁, . . . , c_(n)) such that,for all check nodes, the sum of the neighboring positions among themessage nodes is zero.

Thus, a binary LDPC code is a linear block code with a sparse binaryparity-check matrix. This m×n parity check matrix can be represented bya bipartite graph (e.g., as shown in FIG. 1) with n variable nodescorresponding to columns (bits in the codeword) and m check nodescorresponding to rows (parity check equations). A one in a certain rowand column of the parity check matrix denotes an edge between therespective check and variable node in the graph, whereas a zeroindicates the absence of an edge.

An LDPC code ensemble is characterized by its variable and check degreedistributions (or profiles) λ=└λ₂ . . . λ_(d) _(v) ┘ and ρ=└ρ₂ . . .ρ_(d) _(e) ┘, respectively, where λ_(i)(ρ_(i)) denotes the fraction ofedges connected to a variable (check) node of degree i, and d_(v)(d_(c))is the maximum number of edges connected to any variable (check) node.An equivalent representation of LDPC code profiles can use generatingfunctions${{\lambda(x)} = {\sum\limits_{i = 2}^{d_{v}}{\lambda_{i}x^{i - 1}}}},{{\rho(x)} = {\sum\limits_{i = 2}^{d_{c}}{\rho_{i}{x^{i - 1}.}}}}$

The design rate of an ensemble can be given in terms of λ(x) and ρ(x) by$R = {{1 - \frac{m}{n}} = {1 - \frac{\int_{0}^{1}{{\rho(x)}{\mathbb{d}x}}}{\int_{0}^{1}{{\lambda(x)}{\mathbb{d}x}}}}}$

Even while using a coding scheme, a destination may not be able todetect the transmitted message because of interference. In this case, arelay node, such as another transmitter or receiver, may be used in asystem to relay the information transmitted by the source to thedestination. For example, a relay can receive Y₁ and send out X₁ basedon Y₁.

Some methods have been introduced for the purpose of performanceprediction of code ensembles, such as density evolution (DE) andextrinsic-mutual-information-transfer (EXIT). The design of ratecompatible LDPC codes employing the conventional density evolutionalgorithm, however, typically considers extra constraints on the codeensembles due to the specific structure of rate compatible codes.

LDPC codes are designed for half-duplex relay networks. While thestructure of LDPC codes for half-duplex relay networks are in partsimilar to rate compatible code structures, current design methods basedon Guassian approximation of density are typically not directlyapplicable to the problem of half-duplex relay channel code designbecause of a variation of receive signal to noise ratios (SNRs) indifferent sub-blocks of one codeword.

Therefore, there remains a need to design a LDPC code for a half-duplexrelay channel that applies to the variation of SNRs in differentsub-blocks of one codeword.

SUMMARY OF THE INVENTION

A density evolution algorithm is based on introducing a refineddefinition of node and edge densities for the different parts of a codein accordance with an embodiment of the present invention. Inparticular, density functions ƒ_(V) ⁽¹⁾(i) and ƒ_(V) ⁽²⁾(i) of theoutput edges of the variable nodes with degree i within differentregions w₁ and w_(e), respectively, are defined. Further, densityfunctions ƒ_(C) ⁽¹⁾(j) and ƒ_(C) ⁽²⁾(j) of the output edges for checknodes with degree j within codeword regions w₁ and w_(e), respectively,are defined.

In one embodiment, the extra constraint posed on these densities becauseof the structure of the half-duplex relay channel codes are considered.This set of constraints can introduce new relations between the fourfunctions ƒ_(V) ⁽¹⁾(i), ƒ_(V) ⁽²⁾(i), ƒ_(C) ⁽¹⁾(j), and ƒ_(C) ⁽²⁾(i)that are in addition to the normal constraint on the density functionbased on the code rate.

The variable node density functions ƒ_(V) ⁽¹⁾(i) and ƒ_(V) ⁽²⁾(i) andthe check node density functions ƒ_(C) ⁽¹⁾(j) and ƒ_(C) ⁽²⁾(i) withinthe first codeword region and the second codeword region are calculated.Mixture density functions of output check edges connecting variablenodes in the first codeword region and the second codeword region arecalculated to determine an LDPC code design. If a signal to noise ratio(SNR) of the first codeword region is different than a SNR of the secondcodeword region, thenƒ_(V) ⁽¹⁾(i)≠ƒ_(V) ⁽²⁾(i) for each i and ƒ_(C) ⁽¹⁾(j)≠ƒ_(C) ⁽²⁾(j) foreach j.

{λ_(i) }i, is denoted as the variable edge distribution and {ρ_(j)}_(j)is denoted as the check edge distribution of entire code w₂. m₀ ⁽¹⁾ andm₀ ⁽²⁾ are denoted as the output means from the channel detectors of w₁and w_(e), respectively. N(m, 2m) is denoted as the probability densityfunction (pdf) of a symmetric Gaussian distribution with the mean m andthe variance 2m. m_(C) ⁽¹⁾=m_(C) ⁽²⁾=0 for all i.

The variable node density functions within w₁ and w_(e), respectively,are calculated by: $\begin{matrix}{{f_{V}^{(1)}({\mathbb{i}})} = {N\left( {\underset{m_{V}^{(1)}{(i)}}{\underset{︸}{m_{0}^{(1)} + {\left( {{\mathbb{i}} - 1} \right)m_{C}^{(1)}}}},{2\left( {m_{0}^{(1)} + {\left( {{\mathbb{i}} - 1} \right)m_{C}^{(1)}}} \right)}} \right)}} \\{= {N\left( {{m_{V}^{(1)}({\mathbb{i}})},{2\quad{m_{V}^{(1)}({\mathbb{i}})}}} \right)}} \\{{f_{V}^{(2)}({\mathbb{i}})} = {N\left( {\underset{m_{V}^{(2)}{(i)}}{\underset{︸}{m_{0}^{(2)} + {\left( {{\mathbb{i}} - 1} \right)m_{C}^{(2)}}}},{2\left( {m_{0}^{(2)} + {\left( {{\mathbb{i}} - 1} \right)m_{C}^{(2)}}} \right)}} \right)}} \\{= {{N\left( {{m_{V}^{(2)}({\mathbb{i}})},{2\quad{m_{V}^{(2)}({\mathbb{i}})}}} \right)}.}}\end{matrix}$Further, the check node density functions are determined by calculatingƒ_(C) ⁽¹⁾(i)=N(m_(C) ⁽¹⁾(i), 2m_(C) ⁽¹⁾(i)) and ƒ_(C) ⁽²⁾(i)=N(m_(C)⁽²⁾(i), 2m_(C) ⁽²⁾(i)), respectively, using${m_{C}^{(1)}({\mathbb{i}})} = {\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(1)}{m_{V}^{(1)}({\mathbb{i}})}}} \right)} \right\rbrack^{d_{i,1} - 1}\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(2)}{m_{V}^{(2)}({\mathbb{i}})}}} \right)} \right\rbrack}^{d_{i,2}} \right)}$and${m_{C}^{(2)}({\mathbb{i}})} = {\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(1)}{m_{v}^{(1)}({\mathbb{i}})}}} \right)} \right\rbrack^{d_{i},1}\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(2)}{m_{v}^{(2)}({\mathbb{i}})}}} \right)} \right\rbrack}^{d_{i,2} - 1} \right)}$where ψ(x)∫{ tan h(y/2)}p_(y)(y)dy with p_(y)(y)˜N(x,2x); d₁(i)=iP₁ andd₂(i)=i(1−P₁) with P₁ denoting the ratio of the number of variable nodesin w₁ over the number of variable nodes in the entire node w₂; {λ_(j)⁽¹⁾}_(j) denotes the variable edge distribution of the code w₁; {λ_(j)⁽²⁾}_(j) denotes the variable edge distribution of the code w_(e).

Mixture density functions of the output check edges connecting thevariable nodes in w₁ and w_(e) are calculated as:${f_{C}^{(l)} = {{\sum\limits_{i}{\rho_{i}{N\left( {{m_{C}^{(l)}({\mathbb{i}})},{2\quad{m_{C}^{(l)}({\mathbb{i}})}}} \right)}}} = {N\left( {m_{C}^{(l)},{2\quad m_{C}^{(l)}}} \right)}}},{l = {1,2}},$where {ρ_(i)}_(i) denotes the overall edge distribution of the checknodes.

These and other advantages of the invention will be apparent to those ofordinary skill in the art by reference to the following detaileddescription and the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a graph of a low-density parity check (LDPC) code;

FIG. 2(a) shows full-duplex relay operations of a single relay systemduring a single time slot;

FIG. 2(b) shows half-duplex relay operations of a single relay systemduring two consecutive time slots;

FIG. 3 shows a one-dimensional channel model for the single relay systemof FIG. 2(b);

FIG. 4(a) shows a two relay system operating in half-duplex relay modeduring two consecutive time slots;

FIG. 4(b) shows a two-dimensional channel model for the multiple relaysystem of FIG. 4(a);

FIG. 5(a) is a block diagram of the relay protocol and a correspondinghalf-duplex relay code;

FIG. 5(b) is a block diagram of a half-duplex relay protocol and acorresponding coding strategy;

FIG. 6(a) is a block diagram of a rate-compatible structure of aparity-check matrix for half-duplex relay codes;

FIG. 6(b) shows a high level block diagram of a computer system whichmay be used in an embodiment of the invention;

FIG. 7(a) is a block diagram of a parity-check matrix in accordance withan embodiment of the invention;

FIG. 7(b) is a block diagram of a parity-check matrix that shows anincreasing degree of variable nodes in accordance with an embodiment ofthe invention;

FIG. 7(c) is a block diagram of a parity-check matrix that shows adecreasing degree of variable nodes in accordance with an embodiment ofthe invention;

FIG. 8 is a table of overall edge distributions of the LDPC codes withdifferent rates for additive white Gaussian noise (AWGN) channels inaccordance with an embodiment of the invention;

FIG. 9 shows a table of node probability sets with different structuresof parity-check matrices in accordance with an embodiment of theinvention;

FIG. 10 is a block diagram of a decoding module for iterative decodingof LDPC codes in accordance with an embodiment of the invention;

FIG. 11 is a flowchart showing the steps performed by the processor topredict the ensemble performance of the half-duplex relay codes inaccordance with an embodiment of the invention; and

FIG. 12 is a flowchart of an ensemble optimization procedure performedby the processor in accordance with an embodiment of the invention.

DETAILED DESCRIPTION

FIG. 2(a) shows full-duplex relay operations of a single relay system200 during a single time slot. In particular, a source node, or sourceS, 204 communicates a message 206 to a destination node, or destinationD, 208 during a time slot. The source 204 also communicates the message210 to a relay node, or relay, 212. The relay 212 communicates the samemessage (shown with arrow 214) to the destination 208. Because thesystem 200 is a full-duplex relay system, the relay 212 can receive themessage 210 from the source 204 and simultaneously transmit the message214 to the destination 208. The source 204, relay 212, and destination208 can be wireless terminals in a wireless network.

FIG. 2(b) shows half-duplex relay operations of a single relay system220 during two consecutive time slots. Specifically, the left side ofFIG. 2(b) shows the operations within the odd time slot and the rightside of FIG. 2(b) shows the operation within the even time slot. Duringthe odd time slot, the relay R 224 and the destination D 232 eachreceive signals from the source S 228. During the even time slot, therelay R 224 and the source S 228 each transmit signals to thedestination D 232.

Denote x_(S) and x_(R) as the signals transmitted from S 228 and R 224,respectively. Further (and as shown in FIG. 2(b)), denote h_(SD),h_(SR), and h_(RD) as the path (i.e., channel) gains between {S, D}, {S,R} and {R, D}, respectively.

FIG. 3 shows a one-dimensional channel model 300 for the single relaysystem of FIG. 2(b). The distance 302 between S 304 and D 308 isnormalized to unity. The distance between source S 304 and relay R 312is denoted by d 316 and the distance between relay R 312 and thedestination D 308 is 1−d 320. The channel gain depends on large scalepath loss,${{h_{SR}}^{2} = \frac{1}{d^{\alpha}}},{{h_{SD}}^{2} = 1},$and ${{h_{RD}}^{2} = \frac{1}{\left( {1 - d} \right)^{\alpha}}},$where α ε (2, 5) is the path loss exponent. The channel gains (h_(SR),h_(SD), and h_(RD)) may remain invariant over time. Then the receivedsignal at the relay during each odd time slot can be written as:y _(R)(2t−1)=h _(SR) x _(S)(2t−1)+n _(R)(2t−1),   (1)and the received signals at the destination during two consecutive timeslots are given by:y _(D)(2t−1)=h _(SD) x _(S)(2t−1)+n _(D)(2t−1),   (2)y _(D)(2t)=h _(SD) x _(S)(2t)+h _(RD) x _(R)(2t)+n _(D)(2t),   (3)where n_(R), n_(D)˜N (0, N₀) denote the additive white Gaussian noise(AWGN) at the relay and the destination, respectively. N₀ denotes theAWGN variance. N denotes Gaussian distribution, i.e., n_(R), n_(D)˜N (0,N₀) indicates that the noises n_(R) and n_(D) both follow the Gaussiandistribution with zero mean and variance N₀.

FIG. 4(a) shows a two relay system 400 operating in half-duplex relaymode during two consecutive time slots. In particular, during an oddtime slot, source S 404 transmits a signal to a first relay R₁ 408 andanother signal to a second relay R₂ 412. The source S 404 also transmitsa signal to the destination D 416. During an even time slot, source S404 transmits a signal to the destination D 416 while each relay R₁ 408and R₂ 412 transmits its signal to the destination D 416.

In a K-relay system, denote x_(R) ^((i)) as the signal transmitted fromrelay i (R_(i)), and h_(SR) ^((i)) and h_(RD) ^((i)) as the channelgains from R_(i) to S 404 and D 416, respectively, 1≦i≦K. Then thereceived signal at R_(i) is given byy _(R) ^((i))(2t−1)=h _(SR) ^((i)) x _(S)(2t−1)+n _(R)(2t−1), 1≦i≦K.  (4)The received signal at D 416 during the odd time slot is the same asequation (2) above, and that during the even time slot the receivedsignal can be rewritten from equation (3) into: $\begin{matrix}{{y_{D}\left( {2\quad t} \right)} = {{h_{SD}{x_{S}\left( {2\quad t} \right)}} + {\sum\limits_{i = 1}^{K}{h_{RD}^{(i)}{x_{R}^{(i)}\left( {2\quad t} \right)}}} + {{n_{D}\left( {2\quad t} \right)}.}}} & (5)\end{matrix}$

FIG. 4(b) shows the two-dimensional channel model for the multiple relaysystem 400 of FIG. 4(a). The model shows that the distance 402 betweenthe source S 404 and the destination D 416 has been normalized to unity.The distance between the source S 404 and the first relay R₁ 408 is d₁420 and the distance between the source S 404 and the second relay R₂412 is d₂ 424.

Note that the position of each relay i depends on (d_(i), θ_(i)), whered_(i) is the distance between relay i and the source S 404, and θ_(i) isthe corresponding angle between the relay i and the source S 404 (e.g.,θ₁ is the angle between the source S 404 and the first relay R₁ 408,shown in FIG. 4(a)). The channel gains in the two-relay system shown inFIG. 4(a) can be written as |h_(SR) ^((i)|) ²=1/d_(i) ^(a),|h_(SD)|²=1,and |h_(RD) ^(i)|²=1/[(d_(i) sin(θ_(i)))²+(1−d_(i) cos(θ_(i)))²]^(α/2).

Relay Protocol for Half-Duplex Relay Systems

Relay protocols, which describe how to allocate space-time resources toachieve cooperative transmissions, are typically crucial for relaysystems and the corresponding code design. In one embodiment, a codedesign for the half-duplex relay channel involves the design of twodifferent sets of codebooks, one for the source (x_(S)(2t−1) andx_(S)(2t)) and the other for the relay (x_(R)(2t)), where t representsthe time slot. In one embodiment, the coding and decoding strategy isperformed over multiple blocks.

During the odd time slot, the source transmits a LPDC codeword w₁, i.e.,x_(S)(2t−1)=√{square root over (P_(S,1))}w₁ where E{∥w₁∥²}=1. P_(S, 1)represents the transmit power of the source node during the time 2t−1.E{.} indicates the expectation operation. The two bars on each side ofw₁ represent the norm of w₁. In the case that the destination cannotsuccessfully decode w₁, the relay attempts to decode w₁ using equation(1) or (4) above. Then, the source and the relay cooperatively transmitsome signals related to w₁ during the even time slot. Assuming perfectdecoding at the relay, both the source and the relay transmit the samebits w_(e) during the even time slot, i.e.,x _(S)(2t)=√{square root over (P_(S,2))} w _(e) and x _(R)^((i))(2t)=√{square root over (P_(R) ^((i)))} w _(e), 1≦i≦K, where E{∥w_(e)∥²}=1.Then the received signals at the destination during the even time slot(i.e., equations (3) and (5)) can be rewritten as: $\begin{matrix}\begin{matrix}{{y_{D}\left( {2\quad t} \right)} = {{\underset{{\overset{\sim}{h}}_{SD}}{\underset{︸}{\left( {{h_{SD}\sqrt{P_{S,2}}} + {\sum\limits_{i}{h_{RD}^{(i)}\sqrt{P_{R}^{(i)}}}}} \right)}}{\underset{\_}{w}}_{e}} + {n_{D}\left( {2\quad t} \right)}}} \\{= {{{\overset{\sim}{h}}_{SD}{\underset{\_}{w}}_{e}} + {{n_{D}\left( {2\quad t} \right)}.}}}\end{matrix} & (6)\end{matrix}$

FIG. 5(a) is a block diagram 500 of the relay protocol and thecorresponding half-duplex relay code w₂ 504. w₂=[w₁, w_(e)], which is anextended LDPC code of the original codeword w₁. FIG. 5(b) is a blockdiagram 508 of the half-duplex relay protocol and the correspondingcoding strategy. The coding strategy is as follows:h _(SD) =h _(SD) √{square root over (P_(S,1))}, h _(SD) =h _(SD)√{squareroot over (P_(S,2))}, h _(SR) =h _(SR)√{square root over (P_(S,1))} andh _(RD) =h _(RD)√{square root over (P _(R))}.

Source S 512 transmits codeword w₁ to destination D 516 and relay R 520.Source S 512 also transmits codeword w_(e) to the destination D 516.Relay R 520 also transmits codeword w_(e) to destination D 516.Successful decoding of w₁ may be achieved at the relay even whendecoding fails at the destination because |h_(SR) ^((i))|²>|h_(SD)|² dueto d_(i)<1, 1≦i≦K.

The code structure shown in FIG. 5(a) illustrates the rate-compatibleproperty of the half-duplex relay code w₂. The design of w₂ can,therefore, be categorized into the scenario of the rate-compatible codedesign, i.e., to find the optimum codeword w₂=[w₁, w_(e)] as an extendedcodeword of the original codeword w₁ with extended bits w_(e).

FIG. 6(a) is a block diagram of a rate-compatible structure of theparity-check matrix 600 H₂ for half-duplex relay codes. The informationof w₂ is carried in w₁, and w_(e) contains some additional parity-checkbits. Consequently, the parity-check matrix H₂ 600 for the entirecodeword w₂ contains the parity-check matrix for w₁, H₁ 604, as thenon-zero sub-matrix in the top-left location, A 608 and B 612 as thenon-zero sub-matrices in the bottom, and O 616 as the zero sub-matrix inthe top-right location. M₁ represents the number of rows in the paritycheck matrix H₁, i.e., the number of the check nodes in code w₁; N₁represents the number of columns in H₁, i.e., the number of variablenodes in code w₁ and also the length of code w₁. Similarly, M₂represents the number of rows in the parity check matrix H₂, i.e., thenumber of the check nodes in code w₂; N₂ represents the number ofcolumns in H₂, i.e., the number of variable nodes in code w₂ and alsothe length of code w₂.

Unlike typical rate-compatible LDPC code design, the received SNRs forw₁ and w_(e) are, in general, different according to the receivedsignals at the destination (as described in equations (2) and (6)above). Specifically, the SNRs for the decoding of w₁ and w_(e) can bewritten, respectively, as: $\begin{matrix}{{\gamma_{1} = \frac{{h_{SD}}^{2}P_{S,1}}{N_{0}}},{and}} & (7) \\{{\gamma_{2} = \frac{\left( {{h_{SD}\sqrt{P_{S,2}}} + {\sum\limits_{i}{h_{RD}^{(i)}\sqrt{P_{R}^{(i)}}}}} \right)^{2}}{N_{0}}},} & (8)\end{matrix}$where the transmit power constraint is given by${P_{S,1} + P_{S,2} + {\sum\limits_{i = 1}^{K}P_{R}^{(i)}}} \leq P_{T}$with a maximum overall transmit power denoted by P_(T).

Thus, the half-duplex relay code design problem can be reformulated asthe design of the rate-compatible LDPC code w₂ for a given original LDPCcode w₁, where the received SNRs are γ₁ and γ₂ for w₁ and w_(e),respectively.

The half-duplex relay code optimization algorithm is described belowunder a given power allocation set, where R₂<R₁ (i.e., the rate of thesecond codeword is greater than the rate of the first codeword).

Code Ensemble for Half-Duplex Relay LDPC Codes

A parity-check matrix describes the corresponding LDPC codeword. Thecode ensemble (i.e., edge distribution or node perspective) can be usedto statistically characterize a set of codewords with differentparity-check matrices which share the same edge distribution, and thus,approximately have the same performance. In the above ensemble analysis,the SNR within one entire codeword is the same or the averaged SNRswithin different regions of one codeword are statistically the same(e.g., which can be applied in block-fading or fast-fading channels).

A half-duplex relay codeword typically experiences different receivedSNRs within different regions, e.g., γ₁≠γ₂ for w₁ and w_(e) as indicatedby equations (7) and (8) above. The overall edge distribution is oftentoo rough for the existing ensemble analysis methods to evaluate ahalf-duplex relay codeword.

The following description describes the present invention in terms ofthe processing steps required to implement an embodiment of theinvention. These steps may be performed by an appropriately programmedcomputer, the configuration of which is well known in the art. Anappropriate computer may be implemented, for example, using well knowncomputer processors, memory units, storage devices, computer software,and other nodes. A high level block diagram of such a computer is shownin FIG. 6(b). Computer 650 contains a processor 654 which controls theoverall operation of computer 650 by executing computer programinstructions which define such operation. The computer programinstructions may be stored in a storage device 658 (e.g., magnetic disk)and loaded into memory 662 when execution of the computer programinstructions is desired. Computer 650 also includes one or moreinterfaces 665 for communicating with other devices (e.g., locally orvia a network). Computer 650 also includes input/output 674 whichrepresents devices which allow for user interaction with the computer650 (e.g., display, keyboard, mouse, speakers, buttons, etc.). Thecomputer 650 may represent a relay, source, or destination as describedabove.

One skilled in the art will recognize that an implementation of anactual computer will contain other elements as well, and that FIG. 6(b)is a high level representation of some of the elements of such acomputer for illustrative purposes. In addition, one skilled in the artwill recognize that the processing steps described herein may also beimplemented using dedicated hardware, the circuitry of which isconfigured specifically for implementing such processing steps.Alternatively, the processing steps may be implemented using variouscombinations of hardware and software. Also, the processing steps maytake place in a computer or may be part of a larger machine.

In accordance with an embodiment of the present invention, let D_(V)^((k)) and D_(C) ^((k)) be the maximum degrees of the variable nodes andthe check nodes, respectively, for the code w_(k), k=1 and 2. Denote{λ_(i,k)}_(i=1) ^(D) ^(V) ^((k)) and {ρ_(i,k)}_(i=1) ^(D) ^(C) ^((k)) asthe variable edge distribution and the check edge distribution,respectively. Further, denote {a_(i,k)}_(i=1) ^(D) ^(V) ^((k)) and{b_(i,k)}_(i=1) ^(D) ^(C) ^((k)) as the variable node perspective andthe check node perspective, respectively. Suppose that one half-duplexrelay codeword experiences two different SNRs within two regions as FIG.6(a) shows (γ₁≠γ₂). For the code w₂, the following new ensembledefinitions apply.

Define π₁(i) as the probability of a variable node which has a degree ofi and falls in the region of w₁ (i.e., H1 and A), namely region-1.Consequently, π₂(i)=1−π₁(i) denotes the probability of the node fallingin the region of w_(e) (i.e., B and O), namely, region-2. Theprobability set {π₁(i),π₂(i)}_(i=2) ^(D) ^(V) ⁽²⁾ may satisfy thefollowing constraint: $\begin{matrix}{{{{\sum\limits_{i = 1}^{D_{v}^{(2)}}{{\pi_{1}(i)}a_{i,2}}} = {{\frac{R_{2}}{R_{1}}\quad{or}\quad{\sum\limits_{i = 1}^{D_{v}^{(2)}}{{\pi_{2}(i)}a_{i,2}}}} = {1 - \frac{R_{2}}{R_{1}}}}},}\quad} & (9)\end{matrix}$where R_(i) denotes the rate of w_(i), I=1, 2. The edge distribution isthen defined within region-I, I=1 and 2, as {λ_(i,2) ^((l)), l=1,2}_(i=1) ^(D) ^(V) ⁽²⁾ where $\begin{matrix}{{\lambda_{i,2}^{(l)} = \frac{{\pi_{l}(i)}\lambda_{i,2}}{\sum\limits_{j = 1}^{D_{v}^{(2)}}{{\pi_{l}(j)}\lambda_{j,2}}}},{I = 1},2.} & (10)\end{matrix}$The code ensemble of w₂ {{λ_(i,2) ⁽¹⁾,λ_(i,2) ⁽²⁾}_(i=2) ^(D) ^(V) ⁽²⁾,{ρ_(j,2)}_(j=2) ^(D) ^(C) ⁽²⁾ } depends on the overall code ensemble{{λ_(i,2)}_(i),{ρ_(j,2)}_(j)} and the node probability set{π₁(i),π₂(i)}_(i=2) ^(D) ^(V) ⁽²⁾ . Then, for each overall code ensemble{{λ_(i,2)}_(i), {ρ_(j,2)}_(j)}, there may be a number of possible newcode ensembles {{λ_(i,2) ⁽¹⁾,λ_(i,2) ⁽²⁾}_(i),{ρ_(i,2)}_(j)}, each ofwhich can be determined by one node probability set {π₁(i),π₂(i)}_(i).The code ensemble described in equation (10) describes the parity-checkmatrix of w₂ such that the edge distributions within region-1 andregion-2 can be characterized separately. The half-duplex relaycodewords with the same overall code ensemble{{λ_(i,2)}_(i),{ρ_(j,2)}_(j)} but different probability set{π₁(i),π₂(i)}_(i) typically have different performances.

In one embodiment, the probability of a check node with a certain degreemay fall within different non-zero sub-matrices H₁, A, and B, which maypresent a more detailed description of H₂. Note that {{λ_(i,2)⁽¹⁾,λ_(i,2) ⁽²⁾}_(i),{ρ_(j,2)}_(j)} can offer a more refined descriptionof w₂ than {{λ_(i,2)}_(i),{ρ_(j,2)}_(j)}.

The following are examples to clarify the definition described inequation (10) above. Given each overall edge distribution, the nodeprobability set may satisfy equation (9) in three different manners sothat three different code ensembles can be obtained using equation (10).FIG. 7(a) is a block diagram of a parity-check matrix 704 that shows aproportional node distribution for each degree. FIG. 7(b) is a blockdiagram of a parity-check matrix 708 that shows an increasing degree ofvariable nodes. FIG. 7(c) is a block diagram of a parity-check matrix712 that shows a decreasing degree of variable nodes.

Specifically, FIG. 7(a) shows the first manner of the node probabilitysetting: $\begin{matrix}{{{\pi_{1}(i)} = \frac{R_{2}}{R_{1}}},{1 \leq i \leq D_{v}^{(2)}},} & (11)\end{matrix}$where the nodes with each degree are arranged proportionally in region-1N₁ 706 and region-2 N₂ 707. FIG. 7(b) shows the second manner of thenode probability setting: $\begin{matrix}\left\{ \begin{matrix}{{{\pi_{1}(i)} = 1},} & {{1 \leq i \leq K},} \\{{{\pi_{1}(i)} = \frac{{R_{2}/R_{1}} - {\sum\limits_{j = 1}^{i - 1}\quad a_{j,2}}}{a_{i,2}}},} & {i = {K + 1}} \\{{{\pi_{1}(i)} = 0},} & {{{K + 2} \leq i \leq D_{v}^{(2)}},}\end{matrix} \right. & (12)\end{matrix}$where the variable nodes in the parity-check matrix 708 is arranged fromleft to right in a non-decreasing degree order. FIG. 7(c) shows thethird manner of the node probability setting: $\begin{matrix}\left\{ \begin{matrix}{{{\pi_{1}(i)} = 0},} & {{1 \leq i \leq L},} \\{{{\pi_{1}(i)} = \frac{{R_{2}/R_{1}} - {\sum\limits_{j = {i + 1}}^{D_{V}^{(2)}}a_{j,2}}}{a_{{L + 1},2}}},} & {i = {L + 1}} \\{{{\pi_{1}(i)} = 1},} & {{{L + 2} \leq i \leq D_{v}^{(2)}},}\end{matrix} \right. & (13)\end{matrix}$where the variable nodes in the parity-check matrix 712 are arrangedfrom left to right in a non-increasing degree order.

FIG. 8 shows a table 800 of overall edge distributions 804{{λ_(i,2)}_(i,){ρ_(j,2)}_(j)} of the LDPC codes with different rates forAWGN channels. In one embodiment, code-1 808˜code-4 812 with 1/2 rate.Code-5 816˜code-8 820 with 1/4 rate.

FIG. 9 shows a table 900 of node probability sets with differentstructures of parity-check matrices. In particular, table 900 shows{π₁(i)}_(i) corresponding to the three parity-check matrix structuresshown in FIGS. 7(a), 7(b), and 7(c) for each of the overall edgedistributions in FIG. 8.

Ensemble Performance Analysis for Half-Duplex Relay Codes

Because γ₁≠γ₂ in w₂ in the half-duplex relay scenario, common methodslike density evolution or EXIT chart based on Gaussian approximation aretypically not accurate in performance prediction based on the overalledge distribution {{λ_(i,2)}_(i,){ρ_(j,2)}_(j)}. An iterative approachperformed by the processor 654 to evaluate the half-duplex relay codebased on the code ensemble {{λ_(i,2) ⁽¹⁾,λ_(i,2) ⁽²⁾}_(i){ρ_(j,2)}_(j)}is described below. A difference between this approach and theconventional density evolution approaches is that, instead of assumingequal density function for the entire codeword, different densityfunctions are treated differently for the two different region-I, I=1,2.

Variable Node Decoding Process

FIG. 10 is a block diagram of an embodiment of a decoding module 1000for iterative decoding of LDPC codes over AWGN channels. The decodingmodule 1000 includes a variable node decoder (VND) 1004 and a check nodedecoder (CND) 1008. The VND 1004 is a decoder of repetition codes. TheVND 1004 receives input from a channel 1012 and produces output 1016.Output 1016 generates a hard decision 1020. Output 1016 is also providedas input into a summing block 1024 and then to an edge de-interleaver1028. The edge interleaver 1028 is an interleaver represented by theedges connecting the variable nodes and check nodes. For example, thereare ten edges coming out of the check nodes, and these edges can beordered as “1, 2 . . . 10”. The edge interleaver changes the orders ofthese edges according to a random pattern. After interleaving, theedges' order are changed to “10, 5, 2 . . . 1”. The edge de-interleaverperforms the inverse operation so that the edges' orders are restored tothe original ones “1, 2 . . . , 10”. The output of the edgede-interleaver 1028 is transmitted to the CND 1008. The CND 1008 is adecoder of single parity-check codes.

The output of the edge de-interleaver 1028 is also transmitted toanother summing module 1032. The output of the edge de-interleaver 1028is subtracted from the output of the CND 1008 by the summing module1032. The output of the summing module 1032 is then input into an edgeinterleaver 1036. The output of the edge interleaver 1036 is transmittedto the summing module 1024 (for subtraction) and to the VND 1004 asfeedback. In one embodiment, the computer described above performs oneor more of the functions of the decoding module 1000.

In more detail of the variable node decoding process, the VND outputlog-likelihood ratio (LLR) corresponding to a node with degree i is, ingeneral, given by:${{L_{E,V}(i)} = {L_{0} + {\sum\limits_{j \neq i}^{\quad}\quad{L_{A,V}(j)}}}},$where L₀˜N(m₀,σ₀ ²) denotes the VND input LLR coming from channel, m₀ isthe mean (the mean m₀=2γ₀ depends on the received SNR γ₀ over the AWGNchannel), σ₀ ² is the channel noise variance. L_(E,V) represents theextrinsic log-likelihood ratio (LLR) of the variable node output.L_(A,V) represents the extrinsic LLR of the variable node input.L_(E,V)(i) in region-1 and region-2 are different because γ₁≠γ₂, asshown above in equations (7) and (8). The quantities with superscript(I) are denoted as those for region-I, I=1, 2. In particular, the VNDoutput LLRs of a node with degree i for region-1 and region-2 are given,respectively, by $\begin{matrix}{{L_{E,V}^{(1)}(i)} = {{L_{0}^{(1)} + {\sum\limits_{j \neq i}^{\quad}\quad{{L_{A,V}^{(1)}(j)}\quad{and}\quad{L_{E,V}^{(2)}(i)}}}} = {L_{0}^{(2)} + {\sum\limits_{j \neq i}^{\quad}\quad{L_{A,V}(j)}}}}} & (14)\end{matrix}$where L₀ ⁽¹⁾˜N(m₀ ⁽¹⁾,σ₀ ⁽¹⁾) denotes the detector output of equation(2) and L₀ ⁽²⁾˜N(m₀ ⁽²⁾,σ₀ ⁽²⁾) denotes the detector output of equation(6). m₀ ⁽¹⁾=2γ₁ and m₀ ⁽²⁾=2γ₂; L_(A,V) ^((l))(j) are identicallyindependently distributed symmetric Gaussian random variables, i.e.,L_(A,V) ⁽¹⁾(j)˜N(m_(C) ^((l)),2m_(C) ^((l))), I=1, 2. Then, L_(E,V)^((l))(i), l=1, 2 can be well approximated by a symmetric Gaussianrandom variable, i.e., $\begin{matrix}{{{L_{E,V}^{(l)}(i)} \sim {N\left( {\underset{\underset{m_{V}^{(l)}{(i)}}{︸}}{m_{0}^{l} + {\left( {i - 1} \right)m_{C}^{(l)}}},{2\left( {m_{0}^{(l)},{{+ \left( {i - 1} \right)}m_{C}^{(l)}}} \right)}} \right)}} = {{N\left( {{m_{V}^{(l)}(i)},{2{m_{V}^{(l)}(i)}}} \right)}.}} & (15)\end{matrix}$Thus, the averaged VND output LLR per edge has the Gaussian mixturedensity function: $\begin{matrix}{{f_{v}^{(l)} = {{\sum\limits_{i}^{\quad}{\lambda_{i}^{(l)}{N\left( {{m_{v}^{(l)}(i)},{2{m_{v}^{(l)}(i)}}} \right)}}} = {N\left( {m_{v}^{(l)},{2m_{v}^{(l)}}} \right)}}},{1 = 1},2,} & (16)\end{matrix}$where {λ_(i) ^((l))}_(i) denotes the variable edge distribution inregion-I defined above.Check Node Decoding Process

The CND output LLR of a node with degree i is, in general, given by$\begin{matrix}{{{L_{E,C}(i)} = {2\quad\arg\quad{\tanh\left( {\prod\limits_{j \neq i}\quad{\tanh\left( \frac{L_{A,{C{(j)}}}}{2} \right)}} \right)}}},} & (17)\end{matrix}$where L_(A,C)(j) denotes the CND input LLRs coming from the VND outputedges given by equation (14) above. The following equation results fromtaking expectation over each side of equation (17): $\begin{matrix}{{E\left\{ {\tanh\left( \frac{L_{E,C}(i)}{2} \right)} \right\}} = {E\left\{ {\prod\limits_{j \neq i}\quad{\tanh\left( \frac{L_{A,C}(j)}{2} \right)}} \right\}}} \\{= {\prod\limits_{j \neq i}\quad{E\left\{ {\tanh\left( \frac{L_{A,C}(j)}{2} \right)} \right\}}}}\end{matrix}$where the second equality follows the fact that L_(A,C) (j) isindependently distributed. It should be noted that L_(E,C)(j) inregion-1 and region-2 also have different density functions becauseƒ_(V) ⁽¹⁾≠ƒ_(V) ⁽²⁾ as revealed in equations (15) and (16) above. Then,the CND output LLRs in region-1 satisfy the equation below:$\begin{matrix}{{E\left\{ {\tanh\left( \frac{L_{E,C}^{(1)}(i)}{2} \right)} \right\}} = {\prod\limits_{k \neq i}\quad{E\left\{ {\tanh\left( \frac{L_{A,C}^{(1)}(k)}{2} \right)} \right\}{\prod\limits_{l}\quad{E\left\{ {\tanh\left( \frac{L_{A,C}^{(2)}(l)}{2} \right)} \right\}}}}}} \\{= {E\left\{ {\tanh\left( \frac{L_{A,C}^{(1)}(k)}{2} \right)} \right\}^{d_{i,1} - 1}E\left\{ {\tanh\left( \frac{L_{A,C}^{(2)}(l)}{2} \right)} \right\}^{d_{i,2}}}}\end{matrix}$i.e., ψ(m_(C)⁽¹⁾(i)) = [ψ(m_(V)⁽¹⁾)]^(d_(i, 1) − 1)[ψ(m_(V)⁽²⁾)]^(d_(i, 2))where ψ(x)ΔE{ tan h(y/2)} with y˜N(x,2x). The second equality comes fromthe fact that L_(A,C) ^((l))(j) are within region-I; d_(i,l,) I=1, 2,denotes the number of CND input edges coming from region-I, which isdefined as$d_{i,l} = {{{iP}_{l}\quad{with}\quad P_{l}}\overset{\Delta}{=}\frac{{ia}_{i}{\pi_{l}(i)}}{\sum\limits_{j = 2}^{D_{V}}\quad{ja}_{j}}}$denoting the proportion of the number of edges falling within region-I.Furthermore, using the mixture Gaussian density function in equation(16), the mean of CND output LLRs in region-1 is given by:$\begin{matrix}{{m_{C}^{(1)}(i)} = {{\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}\quad{\lambda_{j}^{(1)}{m_{V}^{(1)}(i)}}} \right)} \right\rbrack^{d_{i,1} - 1}\left\lbrack {\psi\left( {\sum\limits_{j}\quad{\lambda_{j}^{(2)}{m_{V}^{(2)}(i)}}} \right)} \right\rbrack}^{d_{i,2}} \right)}.}} & (18)\end{matrix}$Similarly, the mean of the CND output LLRs within region-2 can then bewritten as: $\begin{matrix}{{m_{C}^{(2)}(i)} = {{\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}\quad{\lambda_{j}^{(1)}{m_{v}^{(1)}(i)}}} \right)} \right\rbrack^{d_{i},1}\left\lbrack {\psi\left( {\sum\limits_{j}\quad{\lambda_{j}^{(2)}{m_{v}^{(2)}(i)}}} \right)} \right\rbrack}^{d_{i,2} - 1} \right)}.}} & (19)\end{matrix}$Using equations (18) and (19) above, the mixture Gaussian densityfunctions of CND outputs are given by $\begin{matrix}{{f_{C}^{(l)} = {{\sum\limits_{i}\quad{\rho_{i}{N\left( {{m_{C}^{(l)}(i)},{2{m_{C}^{(l)}(i)}}} \right)}}} = {N\left( {m_{C}^{(l)},{2m_{C}^{(l)}}} \right)}}},{l = 1},2,} & (20)\end{matrix}$where {ρ_(i)}_(i) denotes the overall edge distribution of the checknodes.Iterative Algorithm for Ensemble Performance Prediction

FIG. 11 is a flowchart showing the steps performed by the processor topredict the ensemble performance of the half-duplex relay codes. Themean of CND output LLRs is set in region-I to zero, where I equals 1 and2 in step 1104. The density functions of VND output LLRs (i.e., m_(V)^(l)(i)) are then calculated (e.g., using equation (15)) in step 1108.The density functions of CND output LLRs (i.e., m_(C) ^((l))(i)) arethen calculated (e.g., using equations (18) and (19)) in step 1112. Themixture density function of CND outputs (i.e., m_(C) ^((l))) are thencalculated (e.g., using equation (20)) in step 1116. The processor thendetermines, in step 1120, whether a predefined maximum iteration numberhas been reached. If so, the iteration is stopped in step 1124. If not,then the process returns to step 1108 and repeats.

Optimization of Half-Duplex Relay Code Ensemble

FIG. 12 is a flowchart of an ensemble optimization procedure that theprocessor can perform. The processor first performs an initializationstep in step 1204. In particular, given the original LDPC code with arate of R₁ and an ensemble of {{λ_(i,1)}_(i=1) ^(D) ^(V) ^((l)),{ρ_(j,1)}_(j) ^(D) ^(C) ^((l)) }, the processor generates N half-duplexrelay codes, each of which has a rate of R₂ and an ensemble ofC(n)={{λ_(i,2) ⁽¹⁾(n),λ_(i,2) ⁽²⁾(n)}_(i=1) ^(D) ^(V) ⁽²⁾,{ρ_(j,2)(n)}_(j=1) ^(D) ^(C) ⁽²⁾ }, n=1, 2, . . . , N.A code ensemble evaluation is then performed in step 1208. Inparticular, each code ensemble C(n) is then evaluated (e.g., using thesteps of FIG. 11), where 1≦n≦N. The optimum code ensemble C*=argmax_(1≦i≦N)m_(dec)(n) is then found, where C*={{λ*_(i,2),λ*_(i,2)}_(i=1)^(D) ^(V) ⁽²⁾ ,{ρ*_(j,2)}_(j=1) ^(D) ^(C) ⁽²⁾ }, and m_(dec)(n) is themean of the decoder output for C(n). Code ensemble updating is thenperformed in step 1212. In particular, Ñ code ensembles are randomlychosen out of {C(n)}_(n=1) ^(N), which are denoted by {tilde over(C)}(k)={{{tilde over (λ)}_(i,2)(k),{tilde over (λ)}_(i,2)(k)}_(i=1)^(D) ^(V) ⁽²⁾ ,{{tilde over (ρ)}_(j,2)(k)}_(j=1) ^(D) ^(C) ⁽²⁾ }, k=1,2, . . . ,Ñ. The n-th code ensemble is then updated by${{C(n)} = {C^{*} + {\alpha{\sum\limits_{k = 1}^{\overset{\sim}{N}}\quad{\left( {- 1} \right)^{k - 1}{\overset{\sim}{C}(k)}}}}}},$where α<1 is the step size. In one embodiment, this step is repeated toupdate all code ensembles C(n), 1≦i≦N.

The processor then determines, in step 1216, whether the iterationnumber exceeds a predefined maximum iteration number. If so, the processis stopped in step 1220. If not, then the processor returns the processto step 1208 and repeats the process.

In one embodiment, in step 1204, to generate the half-duplex relay codeensembles using the original LDPC code ensemble, the processor analyzessome additional rate-compatible constraints. For example, the overalledge distribution and the corresponding overall node perspective of w₂,{λ_(i,2),a_(i,2)}_(i=1) ^(D) ^(V) ⁽²⁾ and {ρ_(j,2),b_(j,2)}_(j=1) ^(D)^(C) ⁽²⁾ , may satisfy the constraints below: $\begin{matrix}\left\{ \begin{matrix}{{\lambda_{2,2} = {1 - {\sum\limits_{j = 3}^{D_{V}^{(2)}}\quad\lambda_{j,2}}}},{{{and}\quad\rho_{2,2}} = {1 - {\sum\limits_{j = 3}^{D_{C}^{(2)}}\quad\rho_{j,2}}}}} \\{{\lambda_{D_{V}^{(2)},2} = \frac{{{\frac{R_{2}}{2}{\sum\limits_{j = 3}^{D_{C}^{(2)}}\quad\left( {\frac{1}{j} - \frac{1}{2}} \right)}} - {\left( {1 - R_{2}} \right){\sum\limits_{j = 3}^{D_{V}^{(2)} - 1}\quad\left( {\frac{1}{j} - \frac{1}{2}} \right)}}},}{\left( {1 - R_{2}} \right)\left( {\frac{1}{D_{V}^{(2)}} - \frac{1}{2}} \right)}},} \\{a_{i,2} = \frac{\frac{\lambda_{i,2}}{i}}{{\sum\limits_{j = 2}^{D_{V}^{(2)}}\quad{\frac{\lambda_{j,2}}{j}\quad{and}\quad b_{i,2}}} = {\frac{\frac{\rho_{i,2}}{i}}{\sum\limits_{j = 2}^{D_{C}^{(2)}}\quad\frac{\rho_{j,2}}{j}}.}}}\end{matrix} \right. & (21)\end{matrix}$

Referring again to the parity-check matrix H₂ of FIG. 4, since O is anall-zero sub-matrix, the overall check node perspective {b_(i,2)}_(i=1)^(D) ^(C) ⁽²⁾ corresponding to H₂ and the overall check node perspective{b_(i,1)}_(i=1) ^(D) ^(C) ⁽¹⁾ corresponding to H₁ should satisfy theconstraints b_(i,2)M₂≧b_(i,1)M₁, i=2, 3, . . . , D_(C) ⁽¹⁾, i.e.,$\begin{matrix}{{{b_{i,2} \geq {\frac{M_{1}}{M_{2}}b_{i,1}}} = {{\frac{\left( {1 - R_{1}} \right)N_{1}}{\left( {1 - R_{2}} \right)N_{2}}b_{i,1}} = {\frac{\left( {1 - R_{1}} \right)R_{2}}{\underset{\underset{\Gamma}{︸}}{\left( {1 - R_{2}} \right)R_{1}}}b_{i,1}}}},{i = 2},3,\ldots\quad,D_{C}^{(1)}} & (22)\end{matrix}$where the first equality follows the fact${1 - R_{i}} = \frac{M_{i}}{N_{i}}$and the second equality comes from the inherent rate-compatibleproperty, R₁N₁=N₁−M₁=N₂−M₂=R₂N₂. Then, using equation (21), the nodeperspective constraints can be equivalently transformed into thecorresponding edge distribution constraints $\begin{matrix}{{{\frac{\rho_{i,2}/i}{\sum\limits_{j = 2}^{D_{C}^{(2)}}\rho_{j,{2/j}}} \geq {\Gamma\quad b_{i,1,}i}} = 2},3,{\ldots\quad D_{C}^{(1)}},{i.e.},{{\frac{\rho_{i,2}}{i} \geq {\Gamma\quad b_{i,1}{\sum\limits_{j = 2}^{D_{C}^{(2)}}\frac{\rho_{j,2}}{j}}}} = {\Gamma\quad{b_{i,1}\left\lbrack {\frac{1}{2} + {\sum\limits_{j = 3}^{D_{C}^{(2)}}{\rho_{j,2}\left( {\frac{1}{j} - \frac{1}{2}} \right)}}} \right\rbrack}}},{i = 2},3,4,\ldots\quad,{D_{C}^{(1)}.}} & (23)\end{matrix}$For the case of i=2 in equation (23), using$\rho_{2,2} = {1 - {\sum\limits_{j = 3}^{D_{C}^{(2)}}\rho_{j,2}}}$in equation (21), results in: $\begin{matrix}{{\frac{\rho_{2,2}}{2} = {\frac{1 - {\sum\limits_{j = 3}^{D_{C}^{(2)}}\rho_{j,2}}}{2} \geq {\frac{\Gamma\quad b_{2,1}}{2} + {\Gamma\quad{b_{2,1}\left\lbrack {\sum\limits_{j = 3}^{D_{C}^{(2)}}{\rho_{j,2}\left( {\frac{1}{j} - \frac{1}{2}} \right)}} \right\rbrack}}}}},{i.e.},{\frac{1 - {\Gamma\quad b_{2,1}}}{2} \geq {{\sum\limits_{j = 3}^{D_{C}^{(2)}}\frac{\rho_{j,2}}{2}} + {\Gamma\quad{{b_{2,1}\left\lbrack {\sum\limits_{j = 3}^{D_{C}^{(2)}}{\rho_{j,2}\left( {\frac{1}{j} - \frac{1}{2}} \right)}} \right\rbrack}.}}}}} & (24)\end{matrix}$Further, the overall variable node perspective {a_(i,2)}_(i=1) ^(D) ^(V)⁽²⁾ corresponding to H₂ and {a_(i,1)}_(i=1) ^(D) ^(V) ⁽¹⁾ correspondingto H₁ satisfy the constraints${{\sum\limits_{k = l}^{D_{V}^{(2)}}{a_{k,2}N_{2}}} \geq {\sum\limits_{k = l}^{D_{V}^{(1)}}{a_{k,1}N_{1}}}},$$\begin{matrix}{{i.e.},{{{\sum\limits_{k = l}^{D_{V}^{(2)}}a_{k,2}} \geq {\frac{N_{1}}{N_{2}}{\sum\limits_{k = l}^{D_{V}^{(1)}}a_{k,1}}}} = {\underset{\underset{V}{︸}}{\frac{R_{2}}{R_{1}}}{\sum\limits_{k = l}^{D_{V}^{(2)}}a_{k,1}}}},{l = 2},3,\ldots\quad,D_{V}^{(1)},} & (25)\end{matrix}$Then, using equation (21), the variable node constraints of equation(25) can be equivalently transformed into the variable edge distributionconstraints $\begin{matrix}{{{{\sum\limits_{k = l}^{D_{V}^{(2)}}\frac{\lambda_{k,2}/k}{\sum\limits_{j = 1}^{D_{V}^{(2)}}\lambda_{j,{2/j}}}} \geq {Y{\sum\limits_{k = l}^{D_{V}^{(1)}}{a_{k,1,}l}}}} = 2},3,{\ldots\quad D_{V}^{(1)}},{i.\quad e.},\quad{{{\sum\limits_{k = l}^{D_{V}^{(2)}}\frac{\lambda_{k,2}}{k}} \geq \quad{\left( {Y\quad{\sum\limits_{k = l}^{D_{V}^{(1)}}a_{k,1}}} \right)\quad\left( {\sum\limits_{k = l}^{D_{V}^{(2)}}\frac{\lambda_{k,2}}{k}} \right)}} = \quad{\left( {Y\quad{\sum\limits_{k = l}^{D_{V}^{(2)}}a_{k,1}}} \right)\quad\left( \quad\frac{\sum\limits_{k = 2}^{D_{C}^{(2)}}\frac{\rho_{k,2}}{k}}{1 - R_{2}}\quad \right)}}\quad,{i.\quad e.},{{\sum\limits_{k = l}^{D_{V}^{(2)}}\frac{\lambda_{k,2}}{k}} \geq {\left( {Y{\sum\limits_{k = l}^{D_{V}^{(1)}}a_{k,1}}} \right)\left( \frac{\frac{1}{2} + {\sum\limits_{k = 3}^{D_{C}^{(2)}}{\rho_{k,2}\left( {\frac{1}{k} - \frac{1}{2}} \right)}}}{1 - R_{2}} \right)}}} & (26)\end{matrix}$Thus, in the initialization step (step 1204) of FIG. 12, the constraintsfor generating half-duplex relay code ensembles based on the given codeensemble of w₁ can be written as shown in equations (23), (24), and(26). In the code ensemble evaluation step (i.e., step 1208 of FIG. 12),the algorithm described in FIG. 11 is employed to predict theperformance of each half-duplex relay code ensemble C(n)={{λ_(i,2)⁽¹⁾(n),λ_(i,2) ⁽²⁾(n)}_(i=2) ^(D) ^(V) ⁽²⁾ ,{ρ_(i,2)(n)}_(i=2) ^(D) ^(C)⁽²⁾ }. Hence, {λ_(i,2) ⁽¹⁾(n),λ_(i,2) ⁽²⁾(n)}_(i=2) ^(D) ^(V) ⁽²⁾ isneeded for the given overall code ensemble{{λ_(i,2)}_(i),{ρ_(j,2)}_(j)}. As described above for a given overalledge distribution {λ_(i,2),ρ_(j,2)}_(i,j), the edge distribution{λ_(i,2) ⁽¹⁾(n),λ_(i,2) ⁽²⁾(n)}_(i=2) ^(D) ^(V) ⁽²⁾ defined in equation(10) depends on the node probability set {π₁(i),π₂(i)}_(i), which is notunique and corresponds to a specific structure of the parity-checkmatrix.

The foregoing Detailed Description is to be understood as being in everyrespect illustrative and exemplary, but not restrictive, and the scopeof the invention disclosed herein is not to be determined from theDetailed Description, but rather from the claims as interpretedaccording to the full breadth permitted by the patent laws. It is to beunderstood that the embodiments shown and described herein are onlyillustrative of the principles of the present invention and that variousmodifications may be implemented by those skilled in the art withoutdeparting from the scope and spirit of the invention. Those skilled inthe art could implement various other feature combinations withoutdeparting from the scope and spirit of the invention.

1. A method for determining a low-density parity check (LDPC) codedesign for a half-duplex relay channel comprising: calculating variablenode density functions ƒ_(V) ⁽¹⁾(i) and ƒ_(V) ⁽²⁾(i) within said firstcodeword region and said second codeword region, respectively, saidvariable node density functions ƒ_(V) ⁽¹⁾(i) and ƒ_(V) ⁽²⁾(i) beingdensity functions of output edges of variable nodes with degree i withinsaid first codeword region and said second codeword region,respectively; calculating check node density functions ƒ_(C) ⁽¹⁾(j) andƒ_(C) ⁽²⁾(j) within said first codeword region and said second codewordregion, respectively, said check node density functions being densityfunctions of output edges of check nodes with degree j within said firstcodeword region and said second codeword region, respectively; andcalculating mixture density functions of output check edges connectingvariable nodes in said first codeword region and said second codewordregion to determine an LDPC code design, wherein, if a signal to noiseratio (SNR) of said first codeword region is different than a signal tonoise ratio of said second codeword region, then ƒ_(V) ⁽¹⁾(i)≠ƒ_(V)⁽²⁾(i) for each i and ƒ_(C) ⁽¹⁾(j)≠ƒ_(C) ⁽²⁾(j) for each j.
 2. Themethod of claim 1 wherein said calculating of said variable node densityfunctions and said calculating of said check node density functions eachfurther comprise using a probability density function of a symmetricGaussian distribution.
 3. The method of claim 1 wherein said variablenode density function ƒ_(V) ^((l))(i) is proportional to${N\left( {\underset{\underset{m_{V}^{(l)}{(i)}}{︸}}{m_{0}^{(l)} + {\left( {i - 1} \right)m_{C}^{(l)}}},{2\left( {m_{0}^{(l)} + {\left( {i - 1} \right)m_{C}^{(l)}}} \right)}} \right)} = {{N\left( {{m_{V}^{(l)}(i)},{2{m_{V}^{(l)}(i)}}} \right)}.}$where I=1, 2, N(u, v) represents the Gaussian distribution with a meanof “u” and a variance of “v”, m₀ represents a first mean value, andm_(C) represents a second mean value.
 4. The method of claim 1 whereinsaid check node density function ƒ_(C) ⁽¹⁾(j) is proportional to (Nm_(C)⁽¹⁾(j), 2m_(C) ⁽¹⁾(j)), wherein${m_{C}^{(1)}(i)} = {\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(1)}{m_{V}^{(1)}(i)}}} \right)} \right\rbrack^{d_{i,1} - 1}\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(2)}{m_{V}^{(2)}(i)}}} \right)} \right\rbrack}^{d_{i,2}} \right)}$and ψ(x)ΔE{ tan h(y/2)} with y˜N(x,2x).
 5. The method of claim 1 whereinsaid check node density function ƒ_(C) ⁽²⁾(j) is proportional to (Nm_(C)⁽²⁾(j), 2m_(C) ⁽²⁾(j)), wherein${m_{C}^{(2)}(i)} = {\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(1)}{m_{v}^{(1)}(i)}}} \right)} \right\rbrack^{d_{i},1}\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(2)}{m_{v}^{(2)}(i)}}} \right)} \right\rbrack}^{d_{i,2} - 1} \right)}$and ψ(x)ΔE{ tan h(y/2)} with y˜N(x,2x).
 6. The method of claim 1 whereinsaid calculating of said mixture density functions of output check edgesfurther comprises determining${f_{C}^{(l)} = {{\sum\limits_{i}{\rho_{i}{N\left( {{m_{C}^{(l)}({\mathbb{i}})},{2\quad{m_{C}^{(l)}({\mathbb{i}})}}} \right)}}} = {N\left( {m_{C}^{(l)},{2\quad m_{C}^{(l)}}} \right)}}},{l = {1,2}},$where {ρ_(i)}_(i) denotes the overall edge distribution of the checknodes.
 7. The method of claim 1 further comprising at least one ofdetermining if a predefined maximum iteration number is reached,performing an initialization step for said density functions, evaluatinga code ensemble, and updating a code ensemble.
 8. A system fordetermining a low-density parity check (LDPC) code design for ahalf-duplex relay channel comprising: a variable node decoder configuredto calculate variable node density functions ƒ_(V) ⁽¹⁾(i) and ƒ_(V)⁽²⁾(i) within said first codeword region and said second codewordregion, respectively, said variable node density functions ƒ_(V) ⁽¹⁾(i)and ƒ_(V) ⁽²⁾(i) being density functions of output edges of variablenodes with degree i within a first codeword region and a second codewordregion, respectively; a check node decoder configured to calculate checknode density functions ƒ_(C) ⁽¹⁾(j) and ƒ_(C) ⁽²⁾(i) within said firstcodeword region and said second codeword region, respectively, saidcheck node density functions ƒ_(C) ⁽¹⁾(j) and ƒ_(C) ⁽²⁾(j) being densityfunctions of output edges of check nodes with degree j within said firstcodeword region and said second codeword region, respectively; aprocessor configured to calculate mixture density functions of outputcheck edges connecting variable nodes in said first codeword region andsaid second codeword region to determine an LDPC code design, wherein,if a signal to noise ratio (SNR) of said first codeword region isdifferent than a signal to noise ratio of said second codeword region,then ƒ_(V) ⁽¹⁾(i)≠ƒ_(V) ⁽²⁾(i) for each i and ƒ_(C) ⁽¹⁾(j)≠ƒ_(C) ⁽²⁾(j)for each j.
 9. The system of claim 8 wherein said variable node decoderis configured to calculate said variable node density functions and saidcheck node decoder is configured to calculate said check node densityfunctions using a probability density function of a symmetric Gaussiandistribution.
 10. The system of claim 8 wherein said variable nodedensity function ƒ_(V) ⁽¹⁾(i) is proportional to${N\left( {\underset{m_{V}^{(1)}{(i)}}{\underset{︸}{m_{0}^{(l)} + {\left( {{\mathbb{i}} - 1} \right)m_{C}^{(l)}}}},{2\left( {m_{0}^{(l)} + {\left( {{\mathbb{i}} - 1} \right)m_{C}^{(l)}}} \right)}} \right)} = {{N\left( {{m_{V}^{(l)}({\mathbb{i}})},{2\quad{m_{V}^{(l)}({\mathbb{i}})}}} \right)}.}$where I=1, 2, N(u,v) represents the Gaussian distribution with a mean of“u” and a variance of “v”, m₀ represents a first mean value, and m_(C)represents a second mean value.
 11. The system of claim 8 wherein saidcheck node density function ƒ_(C) ⁽¹⁾(j) is proportional to (Nm_(C)⁽¹⁾(j), 2m_(C) ⁽¹⁾(j)), wherein${m_{C}^{(1)}({\mathbb{i}})} = {\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(1)}{m_{V}^{(1)}({\mathbb{i}})}}} \right)} \right\rbrack^{d_{i,1} - 1}\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(2)}{m_{V}^{(2)}({\mathbb{i}})}}} \right)} \right\rbrack}^{d_{i,2}} \right)}$and ψ(x)ΔE{ tan h(y/2)} with y˜N(x,2x).
 12. The system of claim 8wherein said check node density function ƒ_(C) ⁽²⁾(j) is proportional to(Nm_(C) ⁽²⁾(j), 2m_(C) ⁽²⁾(j)), wherein${m_{C}^{(2)}({\mathbb{i}})} = {\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(1)}{m_{v}^{(1)}({\mathbb{i}})}}} \right)} \right\rbrack^{d_{i},1}\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(2)}{m_{v}^{(2)}({\mathbb{i}})}}} \right)} \right\rbrack}^{d_{i,2} - 1} \right)}$and ψ(x)ΔE{ tan h(y/2)} with y˜N(x,2x).
 13. The system of claim 8wherein said processor is configured to calculate said mixture densityfunctions of output check edges by determining${f_{C}^{(l)} = {{\sum\limits_{i}{\rho_{i}{N\left( {{m_{C}^{(l)}({\mathbb{i}})},{2\quad{m_{C}^{(l)}({\mathbb{i}})}}} \right)}}} = {N\left( {m_{C}^{(l)},{2\quad m_{C}^{(l)}}} \right)}}},{l = {1,2}},$where {ρ_(i)}_(i) denotes the overall edge distribution of the checknodes.
 14. The system of claim 8 wherein said processor is configured toat least one of determine if a predefined maximum iteration number isreached, perform an initialization step for said density functions,evaluate a code ensemble, and update a code ensemble.
 15. A system fordetermining a low-density parity check (LDPC) code design for ahalf-duplex relay channel comprising: means for calculating variablenode density functions ƒ_(V) ⁽¹⁾(i) and ƒ_(V) ⁽²⁾(i) within said firstcodeword region and said second codeword region, respectively, saidvariable node density functions ƒ_(V) ⁽¹⁾(i) and ƒ_(V) ⁽²⁾(i) beingdensity functions of output edges of variable nodes with degree i withinsaid first codeword region and said second codeword region,respectively; means for calculating check node density functions ƒ_(C)⁽¹⁾(j) and ƒ_(C) ⁽²⁾(j) within said first codeword region and saidsecond codeword region, respectively, said check node density functionsbeing density functions of output edges of check nodes with degree jwithin said first codeword region and said second codeword region,respectively; and means for calculating mixture density functions ofoutput check edges connecting variable nodes in said first codewordregion and said second codeword region to determine an LDPC code design,wherein, if a signal to noise ratio (SNR) of said first codeword regionis different than a signal to noise ratio of said second codewordregion, then ƒ_(V) ⁽¹⁾(i)≠ƒ_(V) ⁽²⁾(i) for each i and ƒ_(C) ⁽¹⁾(j)≠ƒ_(C)⁽²⁾(j) for each j.
 16. The system of claim 15 wherein said means forcalculating said variable node density functions and said check nodedensity functions each further comprise means for using a probabilitydensity function of a symmetric Gaussian distribution.
 17. The system ofclaim 15 wherein said variable node density function ƒ_(V) ^((l))(i) isproportional to${N\left( {\underset{m_{V}^{(l)}{(i)}}{\underset{︸}{m_{0}^{(l)} + {\left( {{\mathbb{i}} - 1} \right)m_{C}^{(l)}}}},{2\left( {m_{0}^{(l)} + {\left( {{\mathbb{i}} - 1} \right)m_{C}^{(l)}}} \right)}} \right)} = {{N\left( {{m_{V}^{(l)}({\mathbb{i}})},{2\quad{m_{V}^{(l)}({\mathbb{i}})}}} \right)}.}$where I=1, 2, N(u,v) represents the Gaussian distribution with a mean of“u” and a variance of “v”, m₀ represents a first mean value, and m_(C)represents a second mean value.
 18. The system of claim 15 wherein saidcheck node density function ƒ_(C) ⁽¹⁾(j) is proportional to (Nm_(C)⁽¹⁾(j), 2m_(C) ⁽¹⁾(j)), wherein${m_{C}^{(1)}({\mathbb{i}})} = {\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(1)}{m_{V}^{(1)}({\mathbb{i}})}}} \right)} \right\rbrack^{d_{i,1} - 1}\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(2)}{m_{V}^{(2)}({\mathbb{i}})}}} \right)} \right\rbrack}^{d_{i,2}} \right)}$and ψ(x)ΔE{ tan h(y/2)} with y˜N(x,2x).
 19. The system of claim 15wherein said check node density function ƒ_(C) ⁽²⁾(j) is proportional to(Nm_(C) ⁽²⁾(j), 2m_(C) ⁽²⁾(j)), wherein${m_{C}^{(2)}({\mathbb{i}})} = {\psi^{- 1}\left( {\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(1)}{m_{v}^{(1)}({\mathbb{i}})}}} \right)} \right\rbrack^{d_{i},1}\left\lbrack {\psi\left( {\sum\limits_{j}{\lambda_{j}^{(2)}{m_{v}^{(2)}({\mathbb{i}})}}} \right)} \right\rbrack}^{d_{i,2} - 1} \right)}$and ψ(x)ΔE{ tan h(y/2)} with y˜N(x,2x).
 20. The system of claim 15wherein said means for calculating said mixture density functions ofoutput check edges further comprises means for determining${f_{C}^{(l)} = {{\sum\limits_{i}{\rho_{i}{N\left( {{m_{C}^{(l)}({\mathbb{i}})},{2\quad{m_{C}^{(l)}({\mathbb{i}})}}} \right)}}} = {N\left( {m_{C}^{(l)},{2\quad m_{C}^{(l)}}} \right)}}},{l = {1,2}},$where {ρ_(i)}_(i) denotes the overall edge distribution of the checknodes.
 21. The system of claim 15 further comprising at least one ofmeans for determining if a predefined maximum iteration number isreached, means for performing an initialization step for said densityfunctions, means for evaluating a code ensemble, and means for updatinga code ensemble.
 22. A method for transmitting a low-density paritycheck (LDPC) code in a half-duplex relay channel comprising:transmitting a plurality of LDPC codes, wherein each code is comprisedof a first codeword region transmitted during a first time period havinga first signal-to-noise ratio (SNR) and a second codeword regiontransmitted during a second time period having a second SNR.